package com.xh.common.thread.ext.limit;

import java.util.concurrent.Executor;

/**
 * 任务执行限制的执行器接口
 */
public interface LimitExecutor<T> extends Executor {

    /**
     * 执行普通任务
     * @param cmd
     */
    void execute(Runnable cmd);

    /**
     * 执行普通任务，可带额外参数。
     * @param cmd
     * @param t
     */
    void execute(Runnable cmd, T t);

    /**
     * 执行限制任务，指定组的编号，和同时执行的最大数量限制。
     * @param cmd
     * @param groupID
     * @param limitSize
     */
    void execute(Runnable cmd, String groupID, int limitSize);

    /**
     * 执行限制任务，指定组的编号，和同时执行的最大数量限制。可带额外参数。
     * @param cmd
     * @param groupID
     * @param limitSize
     * @param t
     */
    void execute(Runnable cmd, String groupID, int limitSize, T t);

}
